package cn.iocoder.yudao.module.member.enums.userpointrecords;

import cn.hutool.core.util.EnumUtil;
import cn.iocoder.yudao.framework.common.core.ArrayValuable;
import lombok.AllArgsConstructor;
import lombok.Getter;

import java.util.Objects;

/**
 * 会员积分的业务类型枚举
 */
@AllArgsConstructor
@Getter
public enum UserPointRecordsBizTypeEnum implements ArrayValuable<Integer> {

    PACKAGE_ORDER_PAY(1, "套餐订单购买，获得积分", "下单获得 {} 积分", true),
    PACKAGE_ORDER_REFUND(2, "套餐订单退款，退回积分", "订单退款，退还 {} 积分", false),
    WRITTEN_EXAM_USE(3, "笔试做题使用", "下单使用 {} 积分", false),
    ADMIN_ADD(4, "管理员增加积分", "管理员增加 {} 积分", true),
    ADMIN_SUBTRACT(5, "管理员扣减积分", "管理员扣减 {} 积分", false),
    SIGN(6, "签到", "签到获得 {} 积分", true),
    INVITE(7, "邀请", "邀请获得 {} 积分", true),

    ;

    /**
     * 类型
     */
    private final Integer type;
    /**
     * 名字
     */
    private final String name;
    /**
     * 描述
     */
    private final String description;
    /**
     * 是否为扣减积分
     */
    private final boolean add;

    @Override
    public Integer[] array() {
        return new Integer[0];
    }

    public static UserPointRecordsBizTypeEnum getByType(Integer type) {
        return EnumUtil.getBy(UserPointRecordsBizTypeEnum.class,
                e -> Objects.equals(type, e.getType()));
    }

}
